FileChooserWidget: Don't show recent items with private hint set
authorKai Willadsen <kai.willadsen@gmail.com>
Tue, 28 Aug 2018 20:14:16 +0000 (20:14 +0000)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 28 Aug 2018 20:14:16 +0000 (20:14 +0000)
gtk/gtkfilechooserwidget.c

index d1dd2f0059a716856cb3ea92961e561dd5172d30..5cdb208ff78be8231362c85a8cc37f78c6981b91 100644 (file)
@@ -7460,6 +7460,23 @@ recent_idle_cleanup (gpointer data)
   g_free (load_data);
 }
 
+static gboolean
+recent_item_is_private (GtkRecentInfo *info)
+{
+  gboolean is_private = FALSE;
+
+  if (gtk_recent_info_get_private_hint (info))
+    {
+      const gchar *app_name = g_get_application_name ();
+      gchar **recent_apps = gtk_recent_info_get_applications (info, NULL);
+      is_private = !g_strv_contains ((const char *const*) recent_apps,
+                                     app_name);
+      g_strfreev (recent_apps);
+    }
+
+  return is_private;
+}
+
 /* Populates the file system model with the GtkRecentInfo* items
  * in the provided list; frees the items
  */
@@ -7481,6 +7498,9 @@ populate_model_with_recent_items (GtkFileChooserWidget *impl,
       GtkRecentInfo *info = l->data;
       GFile *file;
 
+      if (recent_item_is_private (info))
+        continue;
+
       file = g_file_new_for_uri (gtk_recent_info_get_uri (info));
       _gtk_file_system_model_add_and_query_file (priv->recent_model,
                                                  file,